package com.njbw.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;

/**
 * 长沙先飞信息科技有限公司<br>
 * Created with IntelliJ IDEA.<br>
 * Date:2025/9/2<br>
 * Time:14:51<br>
 * 功能描述：<br>
 *
 * @author huang hou chun
 * @since JDK 1.8 <br>
 * Copyright (c) 2023 www.csxfrj.com System Incorporated All Rights Reserved.
 */
@WebServlet("/")
public class HelloServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // uri 和 url 的区别
        // URI 是统一资源标识符（Uniform Resource Identifier），它是一个字符串，用于唯一标识一个资源。URI 可以是一个 URL（统一资源定位符，Uniform Resource Locator），也可以是一个 URN（统一资源名称，Uniform Resource Name）。
        // URL 是统一资源定位符（Uniform Resource Locator），它是 URI 的一个子集，用于描述如何访问一个资源。URL 包含了资源的位置（协议、主机名、端口号、路径等）以及访问资源所需的其他信息（如查询参数等）。
        // 简单来说，URI 是一个更广泛的概念，而 URL 是 URI 的一个具体实现，专门用于定位和访问资源。
        String uri = req.getRequestURI(); // /
        StringBuffer url = req.getRequestURL(); // http://localhost:8080/
        String name = req.getParameter("name");
        // 1.设置响应类型
        resp.setContentType("text/html;charset=UTF-8");
        // 2.获取输出流
        PrintWriter writer = resp.getWriter();
        // 3.写入响应
        writer.write("<h1>Hello, " + (name == null ? "World" : name) + "!</h1>");
        writer.write("<h1>Request URI: " + uri + "</h1>");
        writer.write("<h1>Request URL: " + url + "</h1>");
        // 4.flush 强制输出并关闭输出流
        writer.flush();
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }
}
